const cnchar = require('cnchar');

App({
  onLaunch: function() {
    // 小程序启动时执行的逻辑
    this.checkLoginStatus();
    this.globalData.cnchar = cnchar;
  },
  
  globalData: {
    birthInfo: null,
    destinyData: null,
    expectation: '',
    namesData: [],
    userInfo: null,
    isLoggedIn: false,
    sessionExpired: false
  },

  // 检查登录状态
  checkLoginStatus() {
    const that = this;
    
    // 检查微信登录态是否有效
    wx.checkSession({
      success: function() {
        // 登录态有效，检查是否有存储的用户信息
        const userInfo = wx.getStorageSync('userInfo');
        if (userInfo) {
          that.globalData.userInfo = userInfo;
          that.globalData.isLoggedIn = true;
          that.globalData.sessionExpired = false;
          console.log('登录态有效，用户已登录');
        } else {
          // 没有用户信息，可能需要登录
          console.log('登录态有效，但缺少用户信息，可能需要重新登录');
          that.globalData.sessionExpired = true;
          that.login();
        }
      },
      fail: function() {
        // 登录态过期，需要重新登录
        console.log('登录态已过期，需要重新登录');
        that.globalData.sessionExpired = true;
        that.login();
      }
    });
  },
  
  // 用户登录
  login() {
    const that = this;
    wx.login({
      success: function(res) {
        if (res.code) {
          // 获取到登录凭证，可以发送给后端换取openid和session_key
          console.log('微信登录成功，获取到code:', res.code);
          
          // 如果有自己的后端服务，可以在这里调用接口，发送code到后端
          // 这里只是模拟登录成功
          that.globalData.isLoggedIn = true;
          that.globalData.sessionExpired = false;
          
          // 不要直接调用getUserProfile，需要用户主动触发
          // that.getUserProfile();
        } else {
          console.error('微信登录失败:', res);
          wx.showToast({
            title: '登录失败，请重试',
            icon: 'none'
          });
        }
      },
      fail: function(err) {
        console.error('微信登录调用失败:', err);
        wx.showToast({
          title: '登录失败，请重试',
          icon: 'none'
        });
      }
    });
  },
  
  // 获取用户资料
  getUserProfile() {
    const that = this;
    wx.getUserProfile({
      desc: '用于完善用户资料',
      success: function(res) {
        const userInfo = res.userInfo;
        console.log('获取用户信息成功:', userInfo);
        
        // 保存用户信息
        that.globalData.userInfo = userInfo;
        wx.setStorageSync('userInfo', userInfo);
        
        // 标记登录状态
        that.globalData.isLoggedIn = true;
        that.globalData.sessionExpired = false;
      },
      fail: function(err) {
        console.error('获取用户信息失败:', err);
        // 用户拒绝也暂时认为登录成功，但没有个人信息
        that.globalData.isLoggedIn = true;
      }
    });
  },
  
  // 检查会话状态，如果过期则自动重新登录
  checkSession() {
    return new Promise((resolve, reject) => {
      if (this.globalData.sessionExpired) {
        // 登录态已过期，需要重新登录
        this.login();
        // 延迟一秒后再检查登录状态
        setTimeout(() => {
          if (this.globalData.isLoggedIn) {
            resolve(true);
          } else {
            reject(new Error('登录失败'));
          }
        }, 1000);
      } else {
        // 登录态有效
        resolve(true);
      }
    });
  }
}) 